본문으로 건너뛰기

세그먼테이션에 대해서 설명해주세요.

페이징 기법과 마찬가지로 메모리 관리 측면에서 가장 중요한 것은 사용자 관점에서의 메모리와 실제 메모리를 분리하는 것이다. 지금까지 바왔듯 사용자 관점의 메모리는 실제 메모리와 같지 않고, 매핑(mapped)된다. 이러한 매핑을 통해 논리적 메모리와 물리적 메모리를 구분할 수 있다.

대부분의 사용자는 메모리를 바이트의 연속적인 배열로 생각하지 않는다. 대신 메모리를 순서가 없는 가변 크기의 Segment의 모음으로 보게된다. 마찬가지로 우리는 프로그램을 메소드, 함수, 자료구조 등의 집합으로 생각하게 된다. 프로그램이 어떤 메모리 주소에 담기는지는 신경쓰지 않는다.

세그먼테이션은 이러한 사용자 관점의 메모리를 지원하는 메모리 관리 기법이다. 논리적 주소 공간은 세그먼트의 모음이 된다. 각 세그먼트는 각자의 이름과 길이를 가지고, 사용자는 이를 지정함으로써 주소를 특정한다.

페이징 기법은 하드웨어에 의해 분리된 하나의 주소를 페이지 번호와 페이지 간격으로 특정하고, 사용자에게 이 과정은 보이지 않느다는 점에서 세그먼테이션 기법과 대비된다.

구현의 간단함을 위해 세그먼트들은 이름보다는 Segment Number(세그먼트 번호)로 구별된다. 따라서 논리적 주소는 세그먼트 번호, 세그먼트 간격(offset)의 두 요소로 정의된다.

Reference